#include "setwig.h"
#include "ui_setwig.h"
#include "globalval.h"

SetWig::SetWig(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::SetWig),
    timeUpdateTimer(new QTimer(this))
{
    ui->setupUi(this);
    ui->time->setDigitCount(8);
    // 连接到定时器的timeout信号
    connect(timeUpdateTimer, &QTimer::timeout, this, &SetWig::updateTime);
    // 设置定时器间隔为1000毫秒（1秒）
    timeUpdateTimer->start(1000);
}

SetWig::~SetWig()
{
    delete ui;
}

void SetWig::on_T_button_clicked()
{
    // 构造 MQTT 消息内容
    QString messageText = "Time";
    qDebug() << "Message is ok:" << messageText; // 调试输出消息内容

    // 构造 JSON 对象
    QJsonObject jsonObject;
    jsonObject["message"] = messageText;

    // 将 JSON 对象转换为 JSON 文档，再转换为 QByteArray
    QJsonDocument jsonDoc(jsonObject);
    QByteArray payload = jsonDoc.toJson();

    // 构造 MQTT 消息并发布
    // 使用一个有意义的MQTT主题，比如"led/status/change"
    // 注意：确保topic是一个QString类型，payload是一个QByteArray类型的引用
    QMQTT::Message mqttMessage(0, "/app/control/up", payload);

    GlobalVal::mqtt->publish(mqttMessage); // 假设 MQTT 客户端的 publish 方法接受 QMQTT::Message
}

void SetWig::on_C_button_clicked()
{
    // 构造 MQTT 消息内容
    QString messageText = "change";
    qDebug() << "Message is ok:" << messageText; // 调试输出消息内容

    // 构造 JSON 对象
    QJsonObject jsonObject;
    jsonObject["message"] = messageText;

    // 将 JSON 对象转换为 JSON 文档，再转换为 QByteArray
    QJsonDocument jsonDoc(jsonObject);
    QByteArray payload = jsonDoc.toJson();

    // 构造 MQTT 消息并发布
    // 使用一个有意义的MQTT主题，比如"led/status/change"
    // 注意：确保topic是一个QString类型，payload是一个QByteArray类型的引用
    QMQTT::Message mqttMessage(0, "/app/control/up", payload);

    GlobalVal::mqtt->publish(mqttMessage); // 假设 MQTT 客户端的 publish 方法接受 QMQTT::Message
}

void SetWig::on_R_button_clicked()
{
    // 构造 MQTT 消息内容
    QString messageText = "Rest";
    qDebug() << "Message is ok:" << messageText; // 调试输出消息内容

    // 构造 JSON 对象
    QJsonObject jsonObject;
    jsonObject["message"] = messageText;

    // 将 JSON 对象转换为 JSON 文档，再转换为 QByteArray
    QJsonDocument jsonDoc(jsonObject);
    QByteArray payload = jsonDoc.toJson();

    // 构造 MQTT 消息并发布
    // 使用一个有意义的MQTT主题，比如"led/status/change"
    // 注意：确保topic是一个QString类型，payload是一个QByteArray类型的引用
    QMQTT::Message mqttMessage(0, "/app/control/up", payload);

    GlobalVal::mqtt->publish(mqttMessage); // 假设 MQTT 客户端的 publish 方法接受 QMQTT::Message
}

void SetWig::updateTime()
{
    // 获取当前时间并格式化为字符串
    QTime currentTime = QTime::currentTime();
    QString timeString = currentTime.toString("hh:mm:ss");

    // 在LCD控件上显示时间
    ui->time->display(timeString);
}
